<?php
class Validar {
	
	public static function campo(Campo $campo, $valor) {
		
		if (!$campo->getNulo() && $valor == "") {
			$error = "El campo \"#nombre#\" no admite valores nulos.";
			$error = str_replace("#nombre#", $campo->getNombre(), $error);
			return $error;
		}

		if ($valor != "") {
			switch($campo->getTipo()) {
				case "int":
					preg_match("/^((\d{1,3})(\.\d{3})*)$|(^\d+$)/",$valor,$arr);
					if (count($arr) == 0) {
						$error = "El campo \"#nombre#\" no tiene un formato válido [##.###].";
						$error = str_replace("#nombre#", $campo->getNombre(), $error);
						return $error;
					}
					
					break;
				case "varchar":
					if (strlen($valor) > $campo->getTamano()) {
						$error = "El campo \"#nombre#\" no puede ser mayor de #caracteres# caracteres.";
						$error = str_replace("#nombre#", $campo->getNombre(), $error);
						$error = str_replace("#caracteres#", $campo->getTamano(), $error);
						return $error;
					}
					break;
				case "datetime":
					preg_match("/^(\d{2})\/(\d{2})\/(\d{4}) (([01]\d|2[0-3]):[0-5]\d)$/",$valor,$arr);
	// 				Util::depura($arr);
					if (count($arr) == 0 || !checkdate($arr[2], $arr[1], $arr[3])) {
						$error = "El campo \"#nombre#\" no tiene un formato válido [dd/mm/aaaa hh:mm].";
						$error = str_replace("#nombre#", $campo->getNombre(), $error);
						return $error;
					}
					break;
				case "date":
					preg_match("/^(\d{2})\/(\d{2})\/(\d{4})$/",$valor,$arr);
					if (count($arr) != 4 || !checkdate($arr[2], $arr[1], $arr[3])) {
						$error = "El campo \"#nombre#\" no tiene un formato válido [dd/mm/aaaa].";
						$error = str_replace("#nombre#", $campo->getNombre(), $error);
						return $error;
					}
					
					break;
			}
		}
		return "";
	}
}
?>